
package analisadorlexico;

import java.util.ArrayList;

/**
 *
 * @author Anderson Vinicius
 */
public class Tabela<T> {

    private ArrayList<String> token;
    private ArrayList<T> classificacao;
    private ArrayList<Integer> linha;

    public Tabela() {
        token = new ArrayList<String>();
        classificacao = new ArrayList<T>();
        linha = new ArrayList<Integer>();
    }

    public String getToken(int index) {
        return token.get(index);
    }

    public T getClassificacao(int index) {
        return classificacao.get(index);
    }

    public int getLinha(int index) {
        return linha.get(index);
    }

    public void add(String token, T classificacao, int linha) {
        this.token.add(token);
        this.classificacao.add(classificacao);
        this.linha.add(linha);
    }

    public void remove(int indice) {
        this.token.remove(indice);
        this.classificacao.remove(indice);
        this.linha.remove(indice);
    }

    public void removeLast() {
        int lastIndex = this.token.size()-1;
        this.token.remove(lastIndex);
        this.classificacao.remove(lastIndex);
        this.linha.remove(lastIndex);
    }

    public int size() {
        return token.size();
    }

    @Override
    public String toString() {
        int tamanhoTabela = token.size();
        String tabela = "";
        for(int i = 0; i < tamanhoTabela; i++) {
            tabela += token.get(i) + "\t" + classificacao.get(i) + "\t" + linha.get(i) + "\n";
        }
        return tabela;
    }
}
